package com.candy.inner;

/**
 * 在类的内部声明一个类，称之为内部类
 */
public class Student {
    private String stuName;
    private int stuNo;
    private boolean stuSex;
//    在成员变量声明的位置，声明的类，称之为成员内部类
    private class Game{
        void playGame(){
            System.out.println("我是成员内部类");
        }
    }
//    静态内部类，在类前面加上static进行修饰
    static class Sleep{
        void gotobed(){
            System.out.println("我是静态内部类");
        }
    }

    public void sayhi(){
//        创建成员内部类的对象
        Game g1=new Game();
        g1.playGame();
        Sleep s=new Sleep();
    }

    public static void doStaticClassTest(){
        Sleep s=new Sleep();
        s.gotobed();
//        Game g=new Game();和静态方法调用规则一致，这里不能创建非静态内部类
    }


    public void showInnerClass(){
//        局部内部类
        class Eat{
            void eatSomething(){
                System.out.println("我是局部内部类");
            }
        }
        Eat eat=new Eat();
        eat.eatSomething();
    }

    public void showNoNameClass(){
//        匿名内部类
        new Team(){
            @Override
            public void playGameByTame() {
                System.out.println("我是匿名内部类");
            }
        }.playGameByTame();
    }


}
